TCA プロジェクトは 2 スペースインデントが良さそう
2 スペースインデントについては以下の記事が参考になる。
SwiftUI 時代に向けた 2 スペースインデントのすゝめ - Qiita
SwiftUI もさることながら、TCA の Reducer も中々インデント深くなりがちなので、 2 スペースインデントが向いてそう。
Point-Free は 2 スペース派だし。
多分 ↓ レベルのインデントの深さが最低ラインだと思うので、かなり深い。
以下の例だと 5 段階ネストしているので、 4 スペースから 2 スペースインデントに変更すると最大で 10 文字分の幅の節約になる。
action case ごとの Effect
生成処理をメソッドに切り出してインデントが深くなるのを防ごうとしても、おそらく Level 4 までは余儀なくされるはず。
struct Feature: Reducer {
// level 1
var body: ReducerOf<Self > {
// level 2
Reduce { state, action in
// level 3
switch action {
case .task:
// level 4
return .run { send in
// level 5
await doSomething()
await send(.somethingCompleted)
}
}
}
}
}
あと、 swift-dependencies を使って普通に書いてると深くなりがち。
大体毎回書く以下のようなボイラープレートで 4 段階になった。
ここにはビジネスロジックなりを書くから、基本的にネストはさらに深くなっていく。
struct Client: DependencyKey {
var doSomething: () -> Void
// Level 1
static var liveValue: Self {
// Level 2
.init(
// Level 3
doSomething: {
// Level 4
}
)
}
}